This invention is in the field of communications networks, and is more specifically directed to the synchronous communication of data among network elements that operate at different clock frequencies.
In recent years, the deployment of local-area networks (LANs) of personal computers and workstations in business and educational enterprises has become widespread. These modem networks have provided significant productivity gains, not only by providing individuals with the ability to electronically communicate with one another, but also by enabling shared access of data bases and documents stored on a central server and on the networked client workstations. With the ever-improving performance of modern communications and network elements, both large and small enterprises now utilize networks among their personal computers and workstations. Conventional LANs can also be interconnected with one another by way of bridges or routers into a Wide Area Network (WAN). Typically, each network segment includes a number of client workstations and a bridge or router; interconnection of the bridges and routers in a ring or tree fashion permits communication between clients located on different segments of the WAN. Further, the availability of Internet access to such networked computers extends desktop access beyond local, proprietary, data sources to worldwide public and secure data source sites.
The rapid improvement in functionality and performance of modern personal computers and workstations has, in turn, created a desire for higher data rate network communications, as the quantity of data that can be processed by a client workstation has increased accordingly. Similarly, high bandwidth communications can enable the exchange of data types such as 3-D images, full-motion video, sound files, and the like, each of which are represented by large blocks of data. Another trend is from half-duplex communications over the network to full duplex network communications, permitting the simultaneous transmission and receipt of data, and thus effectively doubling the bandwidth while eliminating bandwidth loss due to collisions.
Packet-based data communication is commonly used in modern LANs and WANs, particularly in high data rate connections over busy networks. As opposed to connection-oriented networks in which a dedicated connection is established between the source and destination nodes in the network, packet switching divides each message (i.e., data block to be communicated) into small packets. Each packet carries identifiers of the source and destination nodes of its corresponding message, along with an identifier of its location in the sequence of packets that comprise the overall message. This permits the multiplexed communication of packets from multiple messages, between multiple combinations of source and destination nodes in the network. The identifiers in each packet allow each destination node to retain its addressed packets, and to resequence those retained packets into the communicated message. As a result, packet-switched networks permit more nodes to communicate with one another at a given time, with each communication utilizing a portion of the overall network bandwidth without blocking other channels. Examples of conventional packet-based networks include Ethernet, token ring, and FDDI.
Recently, LAN switches have become available for use in Ethernet networks, as well as in FDDI and token ring LANs. A LAN switch has multiple ports, each of which may connect to a client workstation (or a network hub, as the case may be), or provide an uplink to another switch or a server. A LAN switch differs from a bridge or hub, in that the switch allows simultaneous switching of packets between multiple pairs of its ports. As a result, the switch provides higher bandwidth for its clients, in the aggregate, with reduced latency. In addition, ports of an Ethernet switch can be connected both to a network segment via a hub, and to a client workstation over a dedicated segment.
Heretofore, the number of ports supportable by conventional switches has been relatively limited. For example, conventional Ethernet switches can support on the order of twenty-four full-duplex 10-Mbit/sec ports and three full-duplex 100-Mbit/sec ports. With the advent of Ethernet communications at gigabit data rates, conventional Ethernet switches for supporting eight full-duplex 100-Mbit/sec ports and one 1000-Mbit/sec (“gigabit”) port are now entering the marketplace.
However, network designers and users are desirous of supporting large numbers of ports, particularly if dedicated full-duplex connections of client workstations (e.g., client workstations C4 through C6 of FIG. 1) are desired. Because of the limited number of ports supported by conventional switch architectures, these conventional designs must insert additional levels of hierarchy into the switching architecture to provide the desired number of ports for a given network. Not only does the management of the network become complex in such conventional arrangements, but the reconfiguration of ports in the network is made quite cumbersome.
By way of further background, the communication of data between switch devices or subsystems is generally synchronous, in that the transmitting and receiving devices transmit and receive data according to a periodic clock signal. Each switch device thus includes a receive side that receives frames of data from another network element, and a transmit side that forwards the received frame to a next destination network element.
Within a given switch device, the receive and transmit sides typically operate according to clocks that are nominally at the same frequency relative to one another, but in practice are at slightly different frequencies because of performance differences. Typically, each switch device generates a clock in its transmit side, according to which the data packets are encoded and transmitted to the next switch device. The receive side of the switch device, on the other hand, recovers the clock signal from the received bitstream itself, according to which the receive side performs its decoding and other receive functions; this recovered clock thus corresponds to the transmit clock generated in the neighboring switch device transmitting the bitstream. Because different switch devices therefore generate the clocks used by the receive and transmit sides of a given switch device, the frequency of the receive clock in a switch device is expected to differ from that of its generated transmit clock. While the difference in clock frequency between the transmit clocks is expected to be relatively slight, well within a specified tolerance level, timing differences between the transmitting and receiving sides within a switch device can still arise. These timing differences generally require that a device that is receiving a data communication must synchronize the received data with the transmitting device before passing the data elsewhere in the system.
Furthermore, the overall transmission architecture must operate at an overall data transfer rate corresponding to its lowest frequency link, with all higher frequency links inserting idle symbols as necessary to not overrun the lowest frequency link. Consider the example of a transmitting switch device that generates a transmit clock at a frequency that is 0.05% slower than that of the transmit clock of a receiving switch device. This means that every 2000 cycles of the slower transmit clock occurs over the same period of time of 2001 cycles of the faster transmit clock. If the switch device with the slower transmit clock transmits data in frames of 490 symbols, with ten idle symbols between each frame, the faster switch device will retransmit these identical data frames and idle symbols, but will insert an additional idle symbol after every fourth frame to account for the difference in transmit clock frequencies. As such, the data transfer rate (i.e., actual data frames, not counting idle symbols) is set by the slowest switch device.
As noted above, many conventional networks utilize packet-based protocols, in which data are transmitted and received in the form of frames. In many cases, especially considering the various sources and destinations of traffic, the frames are generally not transmitted over any given link in a contiguous fashion; rather, idle symbols are generally communicated between adjacent frames over a given link.
The above-noted differences in frequency between the transmitting and receiving sides of a given switch device, however slight, must be addressed in order to avoid communications failure. For example, if the receive clock is slower than the transmit clock in a device, data will be received more slowly than it can be transmitted; the transmitter must not, in this case, forward data as soon as it is received, because at some point the transmitter may be ahead of the receiver to such an extent that it is ready to transmit a next symbol that has not yet been received. Conversely, if the receive clock is faster than the transmit clock within the same device, received symbols may stack up within the device, with the next symbol being present for forwarding before the previous symbol has actually been transmitted.
A conventional technique for addressing the difference in clock domain frequencies is commonly referred to as a “dribble down buffer”. This approach inserts a buffer between the receive and transmit sides of a switch device, with the buffer serving to store one or more received symbols prior to transmission. According to conventional realizations, however, dribble-down buffers have necessarily been relatively deep, and thus costly to implement. Further, the use of a dribble-down buffer generally necessitates a sufficient gap in time between data frames, within which the buffer can be reset. In any event, dribble-down buffers, and other conventional approaches to problems arising from different receive and transmit frequencies, insert some amount of undesired latency within each switch device.